library(Seurat)
Loading required package: SeuratObject
Loading required package: sp
‘SeuratObject’ was built under R 4.3.0 but the current version is 4.3.2; it is recomended that you reinstall ‘SeuratObject’ as the ABI for R
may have changed
Attaching package: ‘SeuratObject’
The following object is masked from ‘package:base’:
intersect
library(tidyverse)
── Attaching core tidyverse packages ────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.4.4 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2 ── Conflicts ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
ipf3.xen <- LoadXenium('output-XETG00143__0020227__Region_1__20231214__022306/')
10X data contains more than one type and is being returned as a list containing matrices of each type.
|--------------------------------------------------|
|==================================================|
Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')
On the theory that if there was only few features, but they had counts, it is probably still interpretable.
ipf3.filtered.xen <- subset(ipf3.xen, subset=nCount_Xenium>20 & nFeature_Xenium>4)
Warning: Not validating FOV objectsWarning: Not validating Centroids objectsWarning: Not validating Centroids objectsWarning: Not validating FOV objectsWarning: Not validating Centroids objectsWarning: Not validating FOV objectsWarning: Not validating FOV objectsWarning: Not validating FOV objectsWarning: Not validating Seurat objects
print('original dataset:')
[1] "original dataset:"
print(ncol(ipf3.xen))
[1] 580730
print('filtered dataset:')
[1] "filtered dataset:"
print(ncol(ipf3.filtered.xen))
[1] 158303
# cleanup cleanup
rm(ipf3.xen)
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 12227670 653.1 85557660 4569.3 106947074 5711.6
Vcells 2224641624 16972.7 4452581310 33970.5 3805168063 29031.2
DefaultAssay(ipf3.filtered.xen) <- 'Xenium'
ipf3.filtered.xen <- NormalizeData(ipf3.filtered.xen, verbose=F)
ipf3.filtered.xen <- FindVariableFeatures(ipf3.filtered.xen, verbose=F) # defaults to finding 2000, which would be all of them, but downstream expects this.
ipf3.filtered.xen <- ScaleData(ipf3.filtered.xen, verbose=F)
ipf3.filtered.xen <- RunPCA(ipf3.filtered.xen, npcs = 30, features = rownames(ipf3.xen), verbose=F)
Error: object 'ipf3.xen' not found
Modification to reduce cluster number. i think the sparsity of data means that pruned edges leads to more communities. Major change is the prune.SNN parameter.
ipf3.filtered.xen <- FindNeighbors(ipf3.filtered.xen, reduction='pca', dims=1:30, prune.SNN=0)
Computing nearest neighbor graph
Computing SNN
ipf3.filtered.xen <- FindClusters(ipf3.filtered.xen, resolution = 0.6)
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 158303
Number of edges: 34314140
Running Louvain algorithm...
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8555
Number of communities: 16
Elapsed time: 353 seconds
DimPlot(ipf3.filtered.xen, label=T)
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
10X core set includes: CCNA1, CCNB2, CDK1, CENPF, KIT, MKI67, PCNA, TOP2A.
FeaturePlot(ipf3.filtered.xen, features=c('COL1A1','CTHRC1','SCN7A','PLA2G2A'),
min.cutoff='q25', max.cutoff='q90', order=T)
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
FeaturePlot(ipf3.filtered.xen, features=c('RGS5','MYH11','CNN1','SFRP2'),
min.cutoff='q25', max.cutoff='q90', order=T)
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
FeaturePlot(ipf3.filtered.xen, features=c('CCNA1','CCNB2','CDK1','CENPF'),
min.cutoff='q25', max.cutoff='q90', order=T)
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
FeaturePlot(ipf3.filtered.xen, features=c('KIT','MKI67','PCNA','TOP2A'),
min.cutoff='q25', max.cutoff='q90', order=T)
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
Rasterizing points since number of points exceeds 100,000.
To disable this behavior set `raster=FALSE`
p <- DotPlot(ipf3.filtered.xen, features=c('EPCAM','ITGB6',
'COL1A1','CTHRC1','SCN7A','PLA2G2A','RGS5','MFAP5','PI16','MYH11','CNN1','SFRP2',
'CCNA1','CCNB2','CDK1','CENPF','KIT','MKI67','PCNA','TOP2A'))
p + coord_flip() + scale_x_discrete(limits = rev)
ImageFeaturePlot(ipf3.filtered.xen, features=c('ARG1'),
min.cutoff='q25', max.cutoff='q60', cols=c('white','red'))
ImageFeaturePlot(ipf3.filtered.xen, features=c('IL13'),
min.cutoff='q25', max.cutoff='q60', cols=c('white','red'))
ImageFeaturePlot(ipf3.filtered.xen, features=c('IL6'),
min.cutoff='q25', max.cutoff='q60', cols=c('white','red'))
ipf3.fib.xen <- subset(ipf3.filtered.xen, idents=c(0,5,9,15))
Warning: Not validating FOV objectsWarning: Not validating Centroids objectsWarning: Not validating Centroids objectsWarning: Not validating FOV objectsWarning: Not validating Centroids objectsWarning: Not validating FOV objectsWarning: Not validating FOV objectsWarning: Not validating FOV objectsWarning: Not validating Seurat objects
DimPlot(ipf3.fib.xen, label=T)
As usual I think the cell cycle signal is strong enough that it forced all proliferative cells into cluster 15 across different cell types. Proceed and prune later. ## Recluster
ipf3.fib.xen <- NormalizeData(ipf3.fib.xen, verbose=F)
ipf3.fib.xen <- FindVariableFeatures(ipf3.fib.xen, verbose=F) # defaults to finding 2000, which would be all of them, but downstream expects this.
ipf3.fib.xen <- ScaleData(ipf3.fib.xen, verbose=F)
ipf3.fib.xen <- RunPCA(ipf3.fib.xen, npcs = 30, features = rownames(ipf3.filtered.xen), verbose=F)
ipf3.fib.xen <- RunUMAP(ipf3.fib.xen, dims = 1:30, verbose=F)
ipf3.fib.xen <- FindNeighbors(ipf3.fib.xen, reduction='pca', dims=1:30, prune.SNN=0)
Computing nearest neighbor graph
Computing SNN
ipf3.fib.xen <- FindClusters(ipf3.fib.xen, resolution = 1)
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 43496
Number of edges: 10770942
Running Louvain algorithm...
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6781
Number of communities: 11
Elapsed time: 68 seconds
DimPlot(ipf3.fib.xen, label=T)
Those fucking proliferative cells, EPCAM+ and COL1+ lumped together in cluster 9. Really justifies why regression is useful. Try higher res first.
ipf3.fib.xen <- FindClusters(ipf3.fib.xen, resolution = 2)
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 43496
Number of edges: 10770942
Running Louvain algorithm...
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5693
Number of communities: 21
Elapsed time: 58 seconds
DimPlot(ipf3.fib.xen, label=T)
FeaturePlot(ipf3.fib.xen, features=c('EPCAM','ITGB6','ABCA3','KRT8'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('COL1A1','CTHRC1','SCN7A','PLA2G2A'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('RGS5','MYH11','CNN1','SFRP2'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('CCNA1','CCNB2','CDK1','CENPF'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('KIT','MKI67','PCNA','TOP2A'),
min.cutoff='q25', max.cutoff='q90', order=T)
Whew. Drop cluster 19 and 7, these got roped in here probably because they are DATPs that express some collagen or proliferative epithelium. One is almost certainly AT2 (ABCA3/KRT8/ITGB6 positive) and the other is proliferative epithelial.
ipf3.fib.xen <- subset(x = ipf3.fib.xen, idents = c(7,19), invert = TRUE)
Warning: Not validating FOV objectsWarning: Not validating Centroids objectsWarning: Not validating Centroids objectsWarning: Not validating FOV objectsWarning: Not validating Centroids objectsWarning: Not validating FOV objectsWarning: Not validating FOV objectsWarning: Not validating FOV objectsWarning: Not validating Seurat objects
ipf3.fib.xen <- NormalizeData(ipf3.fib.xen, verbose=F)
ipf3.fib.xen <- FindVariableFeatures(ipf3.fib.xen, verbose=F) # defaults to finding 2000, which would be all of them, but downstream expects this.
ipf3.fib.xen <- ScaleData(ipf3.fib.xen, verbose=F)
ipf3.fib.xen <- RunPCA(ipf3.fib.xen, npcs = 30, features = rownames(ipf3.filtered.xen), verbose=F)
ipf3.fib.xen <- RunUMAP(ipf3.fib.xen, dims = 1:30, verbose=F)
ipf3.fib.xen <- FindNeighbors(ipf3.fib.xen, reduction='pca', dims=1:30, prune.SNN=0, verbose=F)
ipf3.fib.xen <- FindClusters(ipf3.fib.xen, resolution = 1.5, verbose=F)
DimPlot(ipf3.fib.xen, label=T)
FeaturePlot(ipf3.fib.xen, features=c('COL1A1','CTHRC1','POSTN','SCN7A'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('INMT','RGS5','MYH11','CNN1'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('SFRP2','PLA2G2A','MFAP5','PI16'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('LGR5','WNT5A'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('CCNA1','CCNB2','CDK1','CENPF'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('KIT','MKI67','PCNA','TOP2A'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('LTBP2','COL5A2','COL8A1','DPP6'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('APOD','MFAP5','FBN1','FGFR4'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('PCOLCE2','PDGFRA','SFRP2','SVEP1'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('WNT2','MEDAG','PIM1','RARRES1'),
min.cutoff='q25', max.cutoff='q90', order=T)
FeaturePlot(ipf3.fib.xen, features=c('THBS2'),
min.cutoff='q25', max.cutoff='q90', order=T)
p <- DotPlot(ipf3.fib.xen, features=unique(c('EPCAM','ITGB6',
'COL1A1','CTHRC1','POSTN','COL8A1','SCN7A','INMT','RGS5','MYH11','CNN1','SFRP2',
'PLA2G2A','MFAP5','PI16','LGR5','WNT5A','CCNA1','CCNB2','CDK1','CENPF',
'KIT','MKI67','PCNA','TOP2A','LTBP2','COL5A2','COL8A1','DPP6',
'APOD','MFAP5','FBN1','FGFR4','PCOLCE2','PDGFRA','SFRP2','SVEP1',
'WNT2','MEDAG','PIM1','RARRES1','THBS2'))
)
p + coord_flip() + scale_x_discrete(limits = rev)
ipf3.fib.xen <- RenameIdents(object = ipf3.fib.xen,
`0` = "SmoothMuscle",
`1` = "AlveolarFib",
`2` = "FibroticFib_CTHRC1low",
`3` = "Pericyte",
`4` = "LipoFib",
`5` = "SmoothMuscle",
`6` = "AlveolarFib",
`7` = "FibroticFib_CTHRC1high",
`9` = "ProliferatingFib",
`8` = "AdventitialFib",
`10` = "AlveolarFib",
`11` = "Pericyte",
`12` = "AlveolarFib",
`13` = "AlveolarFib"
)
DimPlot(ipf3.fib.xen, label=T)
On the theory that there might be hidden markers of utility in the Xenium probeset that we could co-opt for next cycle.
fib.markers <- FindAllMarkers(ipf3.fib.xen, only.pos=T)
Calculating cluster SmoothMuscle
For a (much!) faster implementation of the Wilcoxon Rank Sum Test,
(default method for FindMarkers) please install the presto package
--------------------------------------------
install.packages('devtools')
devtools::install_github('immunogenomics/presto')
--------------------------------------------
After installation of presto, Seurat will automatically use the more
efficient implementation (no further action necessary).
This message will be shown once per session
| | 0 % ~calculating
|++ | 3 % ~03s
|+++ | 5 % ~03s
|++++ | 8 % ~02s
|++++++ | 11% ~02s
|+++++++ | 13% ~02s
|++++++++ | 16% ~02s
|++++++++++ | 18% ~02s
|+++++++++++ | 21% ~02s
|++++++++++++ | 24% ~02s
|++++++++++++++ | 26% ~02s
|+++++++++++++++ | 29% ~02s
|++++++++++++++++ | 32% ~02s
|++++++++++++++++++ | 34% ~02s
|+++++++++++++++++++ | 37% ~02s
|++++++++++++++++++++ | 39% ~01s
|++++++++++++++++++++++ | 42% ~01s
|+++++++++++++++++++++++ | 45% ~01s
|++++++++++++++++++++++++ | 47% ~01s
|+++++++++++++++++++++++++ | 50% ~01s
|+++++++++++++++++++++++++++ | 53% ~01s
|++++++++++++++++++++++++++++ | 55% ~01s
|+++++++++++++++++++++++++++++ | 58% ~01s
|+++++++++++++++++++++++++++++++ | 61% ~01s
|++++++++++++++++++++++++++++++++ | 63% ~01s
|+++++++++++++++++++++++++++++++++ | 66% ~01s
|+++++++++++++++++++++++++++++++++++ | 68% ~01s
|++++++++++++++++++++++++++++++++++++ | 71% ~01s
|+++++++++++++++++++++++++++++++++++++ | 74% ~01s
|+++++++++++++++++++++++++++++++++++++++ | 76% ~01s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~00s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~00s
|+++++++++++++++++++++++++++++++++++++++++++ | 84% ~00s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s
Calculating cluster AlveolarFib
| | 0 % ~calculating
|+ | 1 % ~09s
|++ | 3 % ~09s
|++ | 4 % ~09s
|+++ | 5 % ~09s
|++++ | 7 % ~09s
|++++ | 8 % ~09s
|+++++ | 9 % ~08s
|++++++ | 11% ~08s
|++++++ | 12% ~08s
|+++++++ | 13% ~08s
|++++++++ | 14% ~08s
|++++++++ | 16% ~08s
|+++++++++ | 17% ~08s
|++++++++++ | 18% ~08s
|++++++++++ | 20% ~07s
|+++++++++++ | 21% ~07s
|++++++++++++ | 22% ~07s
|++++++++++++ | 24% ~07s
|+++++++++++++ | 25% ~07s
|++++++++++++++ | 26% ~07s
|++++++++++++++ | 28% ~07s
|+++++++++++++++ | 29% ~07s
|++++++++++++++++ | 30% ~06s
|++++++++++++++++ | 32% ~06s
|+++++++++++++++++ | 33% ~06s
|++++++++++++++++++ | 34% ~06s
|++++++++++++++++++ | 36% ~06s
|+++++++++++++++++++ | 37% ~06s
|++++++++++++++++++++ | 38% ~06s
|++++++++++++++++++++ | 39% ~06s
|+++++++++++++++++++++ | 41% ~05s
|++++++++++++++++++++++ | 42% ~05s
|++++++++++++++++++++++ | 43% ~05s
|+++++++++++++++++++++++ | 45% ~05s
|++++++++++++++++++++++++ | 46% ~05s
|++++++++++++++++++++++++ | 47% ~05s
|+++++++++++++++++++++++++ | 49% ~05s
|+++++++++++++++++++++++++ | 50% ~05s
|++++++++++++++++++++++++++ | 51% ~04s
|+++++++++++++++++++++++++++ | 53% ~04s
|+++++++++++++++++++++++++++ | 54% ~04s
|++++++++++++++++++++++++++++ | 55% ~04s
|+++++++++++++++++++++++++++++ | 57% ~04s
|+++++++++++++++++++++++++++++ | 58% ~04s
|++++++++++++++++++++++++++++++ | 59% ~04s
|+++++++++++++++++++++++++++++++ | 61% ~04s
|+++++++++++++++++++++++++++++++ | 62% ~03s
|++++++++++++++++++++++++++++++++ | 63% ~03s
|+++++++++++++++++++++++++++++++++ | 64% ~03s
|+++++++++++++++++++++++++++++++++ | 66% ~03s
|++++++++++++++++++++++++++++++++++ | 67% ~03s
|+++++++++++++++++++++++++++++++++++ | 68% ~03s
|+++++++++++++++++++++++++++++++++++ | 70% ~03s
|++++++++++++++++++++++++++++++++++++ | 71% ~03s
|+++++++++++++++++++++++++++++++++++++ | 72% ~03s
|+++++++++++++++++++++++++++++++++++++ | 74% ~02s
|++++++++++++++++++++++++++++++++++++++ | 75% ~02s
|+++++++++++++++++++++++++++++++++++++++ | 76% ~02s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~02s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~02s
|+++++++++++++++++++++++++++++++++++++++++ | 80% ~02s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~02s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~02s
|+++++++++++++++++++++++++++++++++++++++++++ | 84% ~01s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~01s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++ | 88% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=09s
Calculating cluster FibroticFib_CTHRC1low
| | 0 % ~calculating
|++ | 3 % ~02s
|+++ | 5 % ~02s
|++++ | 8 % ~02s
|++++++ | 11% ~02s
|+++++++ | 13% ~02s
|++++++++ | 16% ~02s
|++++++++++ | 18% ~02s
|+++++++++++ | 21% ~02s
|++++++++++++ | 24% ~02s
|++++++++++++++ | 26% ~02s
|+++++++++++++++ | 29% ~02s
|++++++++++++++++ | 32% ~02s
|++++++++++++++++++ | 34% ~01s
|+++++++++++++++++++ | 37% ~01s
|++++++++++++++++++++ | 39% ~01s
|++++++++++++++++++++++ | 42% ~01s
|+++++++++++++++++++++++ | 45% ~01s
|++++++++++++++++++++++++ | 47% ~01s
|+++++++++++++++++++++++++ | 50% ~01s
|+++++++++++++++++++++++++++ | 53% ~01s
|++++++++++++++++++++++++++++ | 55% ~01s
|+++++++++++++++++++++++++++++ | 58% ~01s
|+++++++++++++++++++++++++++++++ | 61% ~01s
|++++++++++++++++++++++++++++++++ | 63% ~01s
|+++++++++++++++++++++++++++++++++ | 66% ~01s
|+++++++++++++++++++++++++++++++++++ | 68% ~01s
|++++++++++++++++++++++++++++++++++++ | 71% ~01s
|+++++++++++++++++++++++++++++++++++++ | 74% ~01s
|+++++++++++++++++++++++++++++++++++++++ | 76% ~01s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~00s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~00s
|+++++++++++++++++++++++++++++++++++++++++++ | 84% ~00s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s
Calculating cluster Pericyte
| | 0 % ~calculating
|+ | 2 % ~06s
|++ | 4 % ~06s
|+++ | 6 % ~06s
|++++ | 7 % ~06s
|+++++ | 9 % ~06s
|++++++ | 11% ~06s
|+++++++ | 13% ~05s
|++++++++ | 15% ~05s
|+++++++++ | 17% ~05s
|++++++++++ | 19% ~05s
|+++++++++++ | 20% ~05s
|++++++++++++ | 22% ~05s
|+++++++++++++ | 24% ~05s
|+++++++++++++ | 26% ~05s
|++++++++++++++ | 28% ~05s
|+++++++++++++++ | 30% ~04s
|++++++++++++++++ | 31% ~04s
|+++++++++++++++++ | 33% ~04s
|++++++++++++++++++ | 35% ~04s
|+++++++++++++++++++ | 37% ~04s
|++++++++++++++++++++ | 39% ~04s
|+++++++++++++++++++++ | 41% ~04s
|++++++++++++++++++++++ | 43% ~04s
|+++++++++++++++++++++++ | 44% ~03s
|++++++++++++++++++++++++ | 46% ~03s
|+++++++++++++++++++++++++ | 48% ~03s
|+++++++++++++++++++++++++ | 50% ~03s
|++++++++++++++++++++++++++ | 52% ~03s
|+++++++++++++++++++++++++++ | 54% ~03s
|++++++++++++++++++++++++++++ | 56% ~03s
|+++++++++++++++++++++++++++++ | 57% ~03s
|++++++++++++++++++++++++++++++ | 59% ~03s
|+++++++++++++++++++++++++++++++ | 61% ~02s
|++++++++++++++++++++++++++++++++ | 63% ~02s
|+++++++++++++++++++++++++++++++++ | 65% ~02s
|++++++++++++++++++++++++++++++++++ | 67% ~02s
|+++++++++++++++++++++++++++++++++++ | 69% ~02s
|++++++++++++++++++++++++++++++++++++ | 70% ~02s
|+++++++++++++++++++++++++++++++++++++ | 72% ~02s
|++++++++++++++++++++++++++++++++++++++ | 74% ~02s
|++++++++++++++++++++++++++++++++++++++ | 76% ~02s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~01s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~01s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~01s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~01s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~01s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=06s
Calculating cluster LipoFib
| | 0 % ~calculating
|+ | 1 % ~05s
|++ | 2 % ~05s
|++ | 4 % ~05s
|+++ | 5 % ~05s
|+++ | 6 % ~05s
|++++ | 7 % ~05s
|+++++ | 8 % ~05s
|+++++ | 9 % ~04s
|++++++ | 11% ~04s
|++++++ | 12% ~04s
|+++++++ | 13% ~04s
|++++++++ | 14% ~04s
|++++++++ | 15% ~04s
|+++++++++ | 16% ~04s
|+++++++++ | 18% ~04s
|++++++++++ | 19% ~04s
|++++++++++ | 20% ~04s
|+++++++++++ | 21% ~04s
|++++++++++++ | 22% ~04s
|++++++++++++ | 24% ~04s
|+++++++++++++ | 25% ~04s
|+++++++++++++ | 26% ~04s
|++++++++++++++ | 27% ~04s
|+++++++++++++++ | 28% ~04s
|+++++++++++++++ | 29% ~04s
|++++++++++++++++ | 31% ~03s
|++++++++++++++++ | 32% ~03s
|+++++++++++++++++ | 33% ~03s
|++++++++++++++++++ | 34% ~03s
|++++++++++++++++++ | 35% ~03s
|+++++++++++++++++++ | 36% ~03s
|+++++++++++++++++++ | 38% ~03s
|++++++++++++++++++++ | 39% ~03s
|++++++++++++++++++++ | 40% ~03s
|+++++++++++++++++++++ | 41% ~03s
|++++++++++++++++++++++ | 42% ~03s
|++++++++++++++++++++++ | 44% ~03s
|+++++++++++++++++++++++ | 45% ~03s
|+++++++++++++++++++++++ | 46% ~03s
|++++++++++++++++++++++++ | 47% ~03s
|+++++++++++++++++++++++++ | 48% ~03s
|+++++++++++++++++++++++++ | 49% ~03s
|++++++++++++++++++++++++++ | 51% ~02s
|++++++++++++++++++++++++++ | 52% ~02s
|+++++++++++++++++++++++++++ | 53% ~02s
|++++++++++++++++++++++++++++ | 54% ~02s
|++++++++++++++++++++++++++++ | 55% ~02s
|+++++++++++++++++++++++++++++ | 56% ~02s
|+++++++++++++++++++++++++++++ | 58% ~02s
|++++++++++++++++++++++++++++++ | 59% ~02s
|++++++++++++++++++++++++++++++ | 60% ~02s
|+++++++++++++++++++++++++++++++ | 61% ~02s
|++++++++++++++++++++++++++++++++ | 62% ~02s
|++++++++++++++++++++++++++++++++ | 64% ~02s
|+++++++++++++++++++++++++++++++++ | 65% ~02s
|+++++++++++++++++++++++++++++++++ | 66% ~02s
|++++++++++++++++++++++++++++++++++ | 67% ~02s
|+++++++++++++++++++++++++++++++++++ | 68% ~02s
|+++++++++++++++++++++++++++++++++++ | 69% ~02s
|++++++++++++++++++++++++++++++++++++ | 71% ~01s
|++++++++++++++++++++++++++++++++++++ | 72% ~01s
|+++++++++++++++++++++++++++++++++++++ | 73% ~01s
|++++++++++++++++++++++++++++++++++++++ | 74% ~01s
|++++++++++++++++++++++++++++++++++++++ | 75% ~01s
|+++++++++++++++++++++++++++++++++++++++ | 76% ~01s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~01s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~01s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~01s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~01s
|++++++++++++++++++++++++++++++++++++++++++ | 82% ~01s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~01s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~01s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~01s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++ | 88% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s
Calculating cluster FibroticFib_CTHRC1high
| | 0 % ~calculating
|++ | 3 % ~02s
|+++ | 6 % ~02s
|+++++ | 8 % ~02s
|++++++ | 11% ~02s
|+++++++ | 14% ~02s
|+++++++++ | 17% ~02s
|++++++++++ | 19% ~02s
|++++++++++++ | 22% ~02s
|+++++++++++++ | 25% ~02s
|++++++++++++++ | 28% ~02s
|++++++++++++++++ | 31% ~01s
|+++++++++++++++++ | 33% ~01s
|+++++++++++++++++++ | 36% ~01s
|++++++++++++++++++++ | 39% ~01s
|+++++++++++++++++++++ | 42% ~01s
|+++++++++++++++++++++++ | 44% ~01s
|++++++++++++++++++++++++ | 47% ~01s
|+++++++++++++++++++++++++ | 50% ~01s
|+++++++++++++++++++++++++++ | 53% ~01s
|++++++++++++++++++++++++++++ | 56% ~01s
|++++++++++++++++++++++++++++++ | 58% ~01s
|+++++++++++++++++++++++++++++++ | 61% ~01s
|++++++++++++++++++++++++++++++++ | 64% ~01s
|++++++++++++++++++++++++++++++++++ | 67% ~01s
|+++++++++++++++++++++++++++++++++++ | 69% ~01s
|+++++++++++++++++++++++++++++++++++++ | 72% ~01s
|++++++++++++++++++++++++++++++++++++++ | 75% ~01s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~00s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~00s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~00s
|++++++++++++++++++++++++++++++++++++++++++++ | 86% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s
Calculating cluster ProliferatingFib
| | 0 % ~calculating
|+ | 1 % ~08s
|++ | 3 % ~08s
|+++ | 4 % ~08s
|+++ | 5 % ~08s
|++++ | 7 % ~08s
|+++++ | 8 % ~08s
|+++++ | 9 % ~08s
|++++++ | 11% ~08s
|+++++++ | 12% ~08s
|+++++++ | 14% ~07s
|++++++++ | 15% ~07s
|+++++++++ | 16% ~07s
|+++++++++ | 18% ~07s
|++++++++++ | 19% ~07s
|+++++++++++ | 20% ~07s
|+++++++++++ | 22% ~07s
|++++++++++++ | 23% ~07s
|+++++++++++++ | 24% ~07s
|+++++++++++++ | 26% ~06s
|++++++++++++++ | 27% ~06s
|+++++++++++++++ | 28% ~06s
|+++++++++++++++ | 30% ~06s
|++++++++++++++++ | 31% ~06s
|+++++++++++++++++ | 32% ~06s
|+++++++++++++++++ | 34% ~06s
|++++++++++++++++++ | 35% ~06s
|+++++++++++++++++++ | 36% ~05s
|+++++++++++++++++++ | 38% ~05s
|++++++++++++++++++++ | 39% ~05s
|+++++++++++++++++++++ | 41% ~05s
|+++++++++++++++++++++ | 42% ~05s
|++++++++++++++++++++++ | 43% ~05s
|+++++++++++++++++++++++ | 45% ~05s
|+++++++++++++++++++++++ | 46% ~05s
|++++++++++++++++++++++++ | 47% ~05s
|+++++++++++++++++++++++++ | 49% ~04s
|+++++++++++++++++++++++++ | 50% ~04s
|++++++++++++++++++++++++++ | 51% ~04s
|+++++++++++++++++++++++++++ | 53% ~04s
|++++++++++++++++++++++++++++ | 54% ~04s
|++++++++++++++++++++++++++++ | 55% ~04s
|+++++++++++++++++++++++++++++ | 57% ~04s
|++++++++++++++++++++++++++++++ | 58% ~04s
|++++++++++++++++++++++++++++++ | 59% ~03s
|+++++++++++++++++++++++++++++++ | 61% ~03s
|++++++++++++++++++++++++++++++++ | 62% ~03s
|++++++++++++++++++++++++++++++++ | 64% ~03s
|+++++++++++++++++++++++++++++++++ | 65% ~03s
|++++++++++++++++++++++++++++++++++ | 66% ~03s
|++++++++++++++++++++++++++++++++++ | 68% ~03s
|+++++++++++++++++++++++++++++++++++ | 69% ~03s
|++++++++++++++++++++++++++++++++++++ | 70% ~03s
|++++++++++++++++++++++++++++++++++++ | 72% ~02s
|+++++++++++++++++++++++++++++++++++++ | 73% ~02s
|++++++++++++++++++++++++++++++++++++++ | 74% ~02s
|++++++++++++++++++++++++++++++++++++++ | 76% ~02s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~02s
|++++++++++++++++++++++++++++++++++++++++ | 78% ~02s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~02s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~02s
|++++++++++++++++++++++++++++++++++++++++++ | 82% ~02s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~01s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~01s
|++++++++++++++++++++++++++++++++++++++++++++ | 86% ~01s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=09s
Calculating cluster AdventitialFib
| | 0 % ~calculating
|+ | 1 % ~05s
|++ | 2 % ~05s
|++ | 3 % ~05s
|+++ | 4 % ~05s
|+++ | 5 % ~05s
|++++ | 7 % ~05s
|++++ | 8 % ~05s
|+++++ | 9 % ~05s
|+++++ | 10% ~05s
|++++++ | 11% ~05s
|+++++++ | 12% ~05s
|+++++++ | 13% ~05s
|++++++++ | 14% ~05s
|++++++++ | 15% ~05s
|+++++++++ | 16% ~05s
|+++++++++ | 18% ~04s
|++++++++++ | 19% ~04s
|++++++++++ | 20% ~04s
|+++++++++++ | 21% ~04s
|+++++++++++ | 22% ~04s
|++++++++++++ | 23% ~04s
|+++++++++++++ | 24% ~04s
|+++++++++++++ | 25% ~04s
|++++++++++++++ | 26% ~04s
|++++++++++++++ | 27% ~04s
|+++++++++++++++ | 29% ~04s
|+++++++++++++++ | 30% ~04s
|++++++++++++++++ | 31% ~04s
|++++++++++++++++ | 32% ~04s
|+++++++++++++++++ | 33% ~04s
|++++++++++++++++++ | 34% ~04s
|++++++++++++++++++ | 35% ~04s
|+++++++++++++++++++ | 36% ~03s
|+++++++++++++++++++ | 37% ~03s
|++++++++++++++++++++ | 38% ~03s
|++++++++++++++++++++ | 40% ~03s
|+++++++++++++++++++++ | 41% ~03s
|+++++++++++++++++++++ | 42% ~03s
|++++++++++++++++++++++ | 43% ~03s
|++++++++++++++++++++++ | 44% ~03s
|+++++++++++++++++++++++ | 45% ~03s
|++++++++++++++++++++++++ | 46% ~03s
|++++++++++++++++++++++++ | 47% ~03s
|+++++++++++++++++++++++++ | 48% ~03s
|+++++++++++++++++++++++++ | 49% ~03s
|++++++++++++++++++++++++++ | 51% ~03s
|++++++++++++++++++++++++++ | 52% ~03s
|+++++++++++++++++++++++++++ | 53% ~03s
|+++++++++++++++++++++++++++ | 54% ~02s
|++++++++++++++++++++++++++++ | 55% ~02s
|+++++++++++++++++++++++++++++ | 56% ~02s
|+++++++++++++++++++++++++++++ | 57% ~02s
|++++++++++++++++++++++++++++++ | 58% ~02s
|++++++++++++++++++++++++++++++ | 59% ~02s
|+++++++++++++++++++++++++++++++ | 60% ~02s
|+++++++++++++++++++++++++++++++ | 62% ~02s
|++++++++++++++++++++++++++++++++ | 63% ~02s
|++++++++++++++++++++++++++++++++ | 64% ~02s
|+++++++++++++++++++++++++++++++++ | 65% ~02s
|+++++++++++++++++++++++++++++++++ | 66% ~02s
|++++++++++++++++++++++++++++++++++ | 67% ~02s
|+++++++++++++++++++++++++++++++++++ | 68% ~02s
|+++++++++++++++++++++++++++++++++++ | 69% ~02s
|++++++++++++++++++++++++++++++++++++ | 70% ~02s
|++++++++++++++++++++++++++++++++++++ | 71% ~02s
|+++++++++++++++++++++++++++++++++++++ | 73% ~01s
|+++++++++++++++++++++++++++++++++++++ | 74% ~01s
|++++++++++++++++++++++++++++++++++++++ | 75% ~01s
|++++++++++++++++++++++++++++++++++++++ | 76% ~01s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~01s
|++++++++++++++++++++++++++++++++++++++++ | 78% ~01s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~01s
|+++++++++++++++++++++++++++++++++++++++++ | 80% ~01s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~01s
|++++++++++++++++++++++++++++++++++++++++++ | 82% ~01s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~01s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~01s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~01s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~01s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++ | 90% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s
fib.markers %>% group_by(cluster) %>% slice_head(n=10) %>% ungroup() -> top10
top10
# manually save this
p1 <- DoHeatmap(ipf3.fib.xen, features = top10$gene) + NoLegend()
ggsave('forChris-proliferation-on-0020227_files/figure-gfm/markers-heatmap.png', units='in', width=9, height=7)
For version 1.2.0, the instructons say:
“Visualize custom cells groups in Xenium Explorer by importing a CSV file specifying cell ids and corresponding group names. Build a CSV file containing each cell id in the first column and the group the cell should be assigned to in the second column. A cell may only be assigned to one group. Not all cells in the dataset need to be included.
Ensure the columns have headers named “cell_id” and “group”.”
This is basically the named_clusters list with a header and saved as a CSV.
scratch <- tibble(cell_id = names(ipf3.fib.xen$named_clusters),
group = ipf3.fib.xen$named_clusters)
write.csv(scratch, 'Seurat_fib_named_clusters.csv')